/*
* $Id: DefaultFormattingService.java 102464 2013-08-21 15:35:16Z nahlikm1 $
*
* Copyright (c) 2010 AspectWorks, spol. s r.o.
*/
package com.pageobject;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Default formatting service using Czech date and number formats.
*
* <p>Date format: dd.MM.yyyy and number format using <code>1 234,56</code> number format.
*
* @author Pavel Muller
* @version $Revision: 102464 $
*/
public class DefaultFormattingService implements FormattingService {
private static final String DEFAULT_NUMBER_FORMAT = ".00";
private static final String DEFAULT_DATE_FORMAT = "dd.MM.yyyy";
/**
* @see cz.cmhb.olin.selenium.FormattingService#formatDate(java.util.Date)
*/
public String formatDate(Date date) {
if (date == null) {
return null;
}
SimpleDateFormat dateFormat = new SimpleDateFormat(getDateFormat());
return dateFormat.format(date);
}
/**
* @see cz.cmhb.olin.selenium.FormattingService#parseDate(String)
*/
public Date parseDate(String str) {
if (str == null) {
return null;
}
SimpleDateFormat dateFormat = new SimpleDateFormat(getDateFormat());
try {
return dateFormat.parse(str);
} catch (ParseException e) {
throw new IllegalArgumentException("Error parsing date: " + str);
}
}
/**
* @see cz.cmhb.olin.selenium.FormattingService#formatNumber(Number)
*/
public String formatNumber(Number number) {
if (number == null) {
return null;
}
DecimalFormat numberFormat = new DecimalFormat(getNumberFormat());
DecimalFormatSymbols decimalFormatSymbols = numberFormat.getDecimalFormatSymbols();
decimalFormatSymbols.setDecimalSeparator(getDecimalSeparator());
numberFormat.setDecimalFormatSymbols(decimalFormatSymbols);
return numberFormat.format(number);
}
/**
* Returns decimal separator. This implementation returns comma.
* @return decimal separator
*/
protected char getDecimalSeparator() {
return ',';
}
/**
* Returns static date format.
* This implementation returns dd.MM.yyyy.
* @return date format
*/
protected String getDateFormat() {
return DEFAULT_DATE_FORMAT;
}
/**
* Returns static number format.
* This implementation returns <i>.00</i>.
* @return number format
*/
protected String getNumberFormat() {
return DEFAULT_NUMBER_FORMAT;
}
}